package 华为OD机试B卷复用题.进阶题;

import utils.MyUtil;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class HJ33_连续出牌数量 {
    public static void main(String[] args) throws FileNotFoundException {
        Scanner in = new Scanner(new File("src/main/java/华为OD机试B卷复用题/进阶题/input/33.txt"));
        MyUtil.START();
        Solution(in);
        MyUtil.END();
    }

    static String[] sArray1, sArray2;
    static boolean[] isVisited;
    static int len, tmp = 1, max = 1;
    // 这里是探测代码
    static int root, rootMax;
    static int[] resultList;

    // 递归，标记访问过的值，统计总共符合条件的个数
    static void Solution(Scanner in) {
        sArray1 = in.nextLine().split(" ");
        sArray2 = in.nextLine().split(" ");
        len = sArray1.length;
        isVisited = new boolean[len];
        resultList = new int[len];
        for (int i = 0; i < len; i++) {
            isVisited[i] = true;
            tmp = 1;
            // 结果无关，用于探测
            root = i; // 结果无关，用于探测
            rootMax = 1; // 结果无关，用于探测
            dfs(i);
            isVisited[i] = false;
        }
        System.out.println(max);
    }

    static void dfs(int index) {
        for (int i = 0; i < len; i++) {
            if (i == index || isVisited[i]) {
                continue;
            }
            if (sArray1[i].equals(sArray1[index]) || sArray2[i].equals(sArray2[index])) {
                isVisited[i] = true;
                tmp++;
                dfs(i);
                max = Math.max(max, tmp);
                //                tmp--; // 递归不要在这里减掉，会导致递归回去值错误。
                isVisited[i] = false;
            }
        }
        // 结果无关，用于探测
        rootMax = Math.max(rootMax, tmp); // 结果无关，用于探测
        resultList[root] = rootMax; // 结果无关，用于探测
    }
}
